{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "import argparse\n",
    "import os\n",
    "import cv2\n",
    "import h5py\n",
    "from sklearn import preprocessing\n",
    "from tensorflow.keras import backend as K\n",
    "from tensorflow.keras.models import Model, load_model, model_from_json\n",
    "from PIL import Image\n",
    "import math\n",
    "import imagehash\n",
    "import csv\n",
    "from sklearn.model_selection import train_test_split\n",
    "import scipy\n",
    "from tqdm import tqdm\n",
    "from sklearn.metrics import classification_report\n",
    "import imagehash"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "origin_model = load_model('../../../../data/neural_networks/GTSRB_DenseNet121.h5')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 43/43 [00:16<00:00,  2.62it/s]\n"
     ]
    }
   ],
   "source": [
    "X_data = []\n",
    "Y_data = []\n",
    "\n",
    "input_shape=(32,32,3)#3通道图像数据\n",
    "num_class = 43#数据类别数目\n",
    "\n",
    "path='../../../../data/data_set/GTSRB/Final_Training/Images'\n",
    "for file in tqdm(os.listdir(path)):\n",
    "    lab=int(file)\n",
    "    i = 0\n",
    "    for photo_file in os.listdir(path+'/'+file):\n",
    "        if photo_file[0]=='G' or i > 100:\n",
    "            continue\n",
    "        i = i + 1\n",
    "        photo_file_path=path+'/'+file+'/'+photo_file\n",
    "        img = cv2.imread(photo_file_path,1)\n",
    "        img = cv2.resize(img,(input_shape[0],input_shape[1]))\n",
    "        X_data.append(img)\n",
    "        Y_data.append(lab)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "# print(len(X_data))\n",
    "# print(Counter(Y_data))\n",
    "\n",
    "X_data=np.array(X_data)\n",
    "X_data=X_data/255.0\n",
    "Y_data=np.array(Y_data)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 对训练集进行切割，然后进行训练\n",
    "train_x,test_x,train_y,test_y = train_test_split(X_data,Y_data,test_size=0.8)\n",
    "\n",
    "lb=preprocessing.LabelBinarizer().fit(np.array(range(num_class)))#对标签进行ont_hot编码\n",
    "train_y=lb.transform(train_y)#因为是多分类任务，必须进行编码处理\n",
    "test_y=lb.transform(test_y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "test_x_perdict = origin_model(test_x)\n",
    "test_x_perdict_arg = np.argmax(test_x_perdict, axis=1)\n",
    "test_y_arg = np.argmax(test_y, axis=1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "report_dict = classification_report(test_y_arg,test_x_perdict_arg,output_dict=True)\n",
    "report = classification_report(test_y_arg,test_x_perdict_arg)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.95"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "report_dict[str(42)]['precision']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [],
   "source": [
    "precision_old = []\n",
    "recall_old = []\n",
    "f1_old = []"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [],
   "source": [
    "for i in np.arange(len(report_dict)-3):\n",
    "    precision_old.append(report_dict[str(i)]['precision'])\n",
    "    recall_old.append(report_dict[str(i)]['recall'])\n",
    "    f1_old.append(report_dict[str(i)]['f1-score'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "              precision    recall  f1-score   support\n",
      "\n",
      "           0       1.00      0.93      0.97        75\n",
      "           1       0.93      0.86      0.89        88\n",
      "           2       0.64      0.84      0.73        76\n",
      "           3       0.77      0.96      0.85        82\n",
      "           4       0.99      0.93      0.96        83\n",
      "           5       0.70      0.91      0.80        81\n",
      "           6       0.90      1.00      0.95        76\n",
      "           7       0.90      0.70      0.79        79\n",
      "           8       0.89      0.94      0.91        80\n",
      "           9       0.91      0.93      0.92        85\n",
      "          10       0.96      1.00      0.98        80\n",
      "          11       0.60      0.96      0.74        80\n",
      "          12       0.97      0.99      0.98        88\n",
      "          13       0.94      1.00      0.97        77\n",
      "          14       0.98      1.00      0.99        83\n",
      "          15       0.94      0.90      0.92        86\n",
      "          16       1.00      0.80      0.89        80\n",
      "          17       1.00      0.98      0.99        83\n",
      "          18       0.98      0.50      0.66        80\n",
      "          19       0.79      0.95      0.86        83\n",
      "          20       0.84      0.90      0.87        81\n",
      "          21       0.86      0.90      0.88        77\n",
      "          22       0.99      1.00      0.99        78\n",
      "          23       0.70      0.46      0.56        76\n",
      "          24       0.91      0.55      0.69        78\n",
      "          25       0.74      0.98      0.84        83\n",
      "          26       0.67      0.95      0.79        78\n",
      "          27       0.98      0.51      0.67        81\n",
      "          28       0.86      0.97      0.91        91\n",
      "          29       0.74      0.91      0.82        80\n",
      "          30       0.87      0.61      0.72        85\n",
      "          31       1.00      0.82      0.90        82\n",
      "          32       0.77      0.85      0.81        82\n",
      "          33       0.77      0.97      0.86        77\n",
      "          34       0.97      0.78      0.87        87\n",
      "          35       1.00      1.00      1.00        82\n",
      "          36       1.00      0.70      0.82        82\n",
      "          37       0.96      1.00      0.98        75\n",
      "          38       0.60      1.00      0.75        80\n",
      "          39       0.98      0.68      0.80        77\n",
      "          40       0.97      0.75      0.84        79\n",
      "          41       1.00      0.67      0.80        75\n",
      "          42       0.95      0.90      0.93        84\n",
      "\n",
      "    accuracy                           0.86      3475\n",
      "   macro avg       0.88      0.86      0.86      3475\n",
      "weighted avg       0.88      0.86      0.86      3475\n",
      "\n"
     ]
    }
   ],
   "source": [
    "print(report)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[1.0, 0.926829268292683, 0.64, 0.7669902912621359, 0.9871794871794872, 0.7047619047619048, 0.9047619047619048, 0.9016393442622951, 0.8928571428571429, 0.9080459770114943, 0.963855421686747, 0.6015625, 0.9666666666666667, 0.9390243902439024, 0.9764705882352941, 0.9390243902439024, 1.0, 1.0, 0.975609756097561, 0.79, 0.8390804597701149, 0.8625, 0.9873417721518988, 0.7, 0.9148936170212766, 0.7431192660550459, 0.6727272727272727, 0.9761904761904762, 0.8627450980392157, 0.7448979591836735, 0.8666666666666667, 1.0, 0.7692307692307693, 0.7653061224489796, 0.9714285714285714, 1.0, 1.0, 0.9615384615384616, 0.5970149253731343, 0.9811320754716981, 0.9672131147540983, 1.0, 0.95] [0.9333333333333333, 0.8636363636363636, 0.8421052631578947, 0.9634146341463414, 0.927710843373494, 0.9135802469135802, 1.0, 0.6962025316455697, 0.9375, 0.9294117647058824, 1.0, 0.9625, 0.9886363636363636, 1.0, 1.0, 0.8953488372093024, 0.8, 0.9759036144578314, 0.5, 0.9518072289156626, 0.9012345679012346, 0.8961038961038961, 1.0, 0.4605263157894737, 0.5512820512820513, 0.9759036144578314, 0.9487179487179487, 0.5061728395061729, 0.967032967032967, 0.9125, 0.611764705882353, 0.8170731707317073, 0.8536585365853658, 0.974025974025974, 0.7816091954022989, 1.0, 0.6951219512195121, 1.0, 1.0, 0.6753246753246753, 0.7468354430379747, 0.6666666666666666, 0.9047619047619048] [0.9655172413793104, 0.8941176470588236, 0.7272727272727272, 0.854054054054054, 0.9565217391304347, 0.7956989247311829, 0.9500000000000001, 0.7857142857142858, 0.9146341463414636, 0.9186046511627908, 0.9815950920245399, 0.7403846153846154, 0.9775280898876404, 0.9685534591194969, 0.988095238095238, 0.9166666666666666, 0.888888888888889, 0.9878048780487805, 0.6611570247933884, 0.8633879781420766, 0.8690476190476191, 0.8789808917197451, 0.9936305732484078, 0.5555555555555555, 0.688, 0.84375, 0.7872340425531915, 0.6666666666666666, 0.9119170984455958, 0.8202247191011237, 0.7172413793103449, 0.8993288590604027, 0.8092485549132947, 0.8571428571428571, 0.8662420382165605, 1.0, 0.8201438848920863, 0.9803921568627451, 0.7476635514018691, 0.8, 0.8428571428571427, 0.8, 0.9268292682926829]\n"
     ]
    }
   ],
   "source": [
    "print(precision_old,recall_old,f1_old)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[0.9655172413793104,\n",
       " 0.8941176470588236,\n",
       " 0.7272727272727272,\n",
       " 0.854054054054054,\n",
       " 0.9565217391304347,\n",
       " 0.7956989247311829,\n",
       " 0.9500000000000001,\n",
       " 0.7857142857142858,\n",
       " 0.9146341463414636,\n",
       " 0.9186046511627908,\n",
       " 0.9815950920245399,\n",
       " 0.7403846153846154,\n",
       " 0.9775280898876404,\n",
       " 0.9685534591194969,\n",
       " 0.988095238095238,\n",
       " 0.9166666666666666,\n",
       " 0.888888888888889,\n",
       " 0.9878048780487805,\n",
       " 0.6611570247933884,\n",
       " 0.8633879781420766,\n",
       " 0.8690476190476191,\n",
       " 0.8789808917197451,\n",
       " 0.9936305732484078,\n",
       " 0.5555555555555555,\n",
       " 0.688,\n",
       " 0.84375,\n",
       " 0.7872340425531915,\n",
       " 0.6666666666666666,\n",
       " 0.9119170984455958,\n",
       " 0.8202247191011237,\n",
       " 0.7172413793103449,\n",
       " 0.8993288590604027,\n",
       " 0.8092485549132947,\n",
       " 0.8571428571428571,\n",
       " 0.8662420382165605,\n",
       " 1.0,\n",
       " 0.8201438848920863,\n",
       " 0.9803921568627451,\n",
       " 0.7476635514018691,\n",
       " 0.8,\n",
       " 0.8428571428571427,\n",
       " 0.8,\n",
       " 0.9268292682926829]"
      ]
     },
     "execution_count": 44,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "f1_old"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "算混淆矩阵"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "BIT——ResNet生成的杀死率不均衡，查看原始图像和生成测试用例的混淆矩阵发现，有区别。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "grad_path = \"../../../../output/grad/DenseNet121/GTSRB/generated_samples\"\n",
    "grad_new_inputs = np.load(os.path.join(grad_path, 'new_inputs.npy'))\n",
    "grad_origin_inputs = np.load(os.path.join(grad_path, 'orgin_inputs.npy'))\n",
    "grad_new_outputs = np.load(os.path.join(grad_path, 'new_outputs.npy'))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "grad_perdict = origin_model(grad_new_inputs)\n",
    "grad_perdict_arg = np.argmax(grad_perdict, axis=1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "grad_new_outputs_arg = np.argmax(grad_new_outputs, axis=1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "D:\\Anaconda3\\envs\\grad\\lib\\site-packages\\sklearn\\metrics\\_classification.py:1248: UndefinedMetricWarning: Precision and F-score are ill-defined and being set to 0.0 in labels with no predicted samples. Use `zero_division` parameter to control this behavior.\n",
      "  _warn_prf(average, modifier, msg_start, len(result))\n",
      "D:\\Anaconda3\\envs\\grad\\lib\\site-packages\\sklearn\\metrics\\_classification.py:1248: UndefinedMetricWarning: Precision and F-score are ill-defined and being set to 0.0 in labels with no predicted samples. Use `zero_division` parameter to control this behavior.\n",
      "  _warn_prf(average, modifier, msg_start, len(result))\n",
      "D:\\Anaconda3\\envs\\grad\\lib\\site-packages\\sklearn\\metrics\\_classification.py:1248: UndefinedMetricWarning: Precision and F-score are ill-defined and being set to 0.0 in labels with no predicted samples. Use `zero_division` parameter to control this behavior.\n",
      "  _warn_prf(average, modifier, msg_start, len(result))\n",
      "D:\\Anaconda3\\envs\\grad\\lib\\site-packages\\sklearn\\metrics\\_classification.py:1248: UndefinedMetricWarning: Precision and F-score are ill-defined and being set to 0.0 in labels with no predicted samples. Use `zero_division` parameter to control this behavior.\n",
      "  _warn_prf(average, modifier, msg_start, len(result))\n",
      "D:\\Anaconda3\\envs\\grad\\lib\\site-packages\\sklearn\\metrics\\_classification.py:1248: UndefinedMetricWarning: Precision and F-score are ill-defined and being set to 0.0 in labels with no predicted samples. Use `zero_division` parameter to control this behavior.\n",
      "  _warn_prf(average, modifier, msg_start, len(result))\n",
      "D:\\Anaconda3\\envs\\grad\\lib\\site-packages\\sklearn\\metrics\\_classification.py:1248: UndefinedMetricWarning: Precision and F-score are ill-defined and being set to 0.0 in labels with no predicted samples. Use `zero_division` parameter to control this behavior.\n",
      "  _warn_prf(average, modifier, msg_start, len(result))\n"
     ]
    }
   ],
   "source": [
    "report_dict = classification_report(grad_new_outputs_arg, grad_perdict_arg,output_dict=True)\n",
    "report = classification_report(grad_new_outputs_arg, grad_perdict_arg)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "              precision    recall  f1-score   support\n",
      "\n",
      "           0       0.00      0.00      0.00        16\n",
      "           1       0.67      0.24      0.35       197\n",
      "           2       0.37      0.25      0.29       179\n",
      "           3       0.73      0.31      0.43       131\n",
      "           4       0.48      0.41      0.45       152\n",
      "           5       0.67      0.23      0.34       147\n",
      "           6       0.73      0.73      0.73        22\n",
      "           7       0.64      0.39      0.48       101\n",
      "           8       0.46      0.36      0.40       101\n",
      "           9       0.52      0.51      0.51       102\n",
      "          10       0.85      0.49      0.62       136\n",
      "          11       0.63      0.40      0.49        84\n",
      "          12       0.83      0.53      0.65       163\n",
      "          13       0.67      0.59      0.63       152\n",
      "          14       0.95      0.68      0.79        59\n",
      "          15       0.35      0.73      0.48        64\n",
      "          16       0.88      0.42      0.57        36\n",
      "          17       0.98      0.58      0.73        93\n",
      "          18       0.72      0.53      0.61       108\n",
      "          19       0.46      0.62      0.52        26\n",
      "          20       0.58      0.26      0.36        27\n",
      "          21       0.17      0.20      0.18        15\n",
      "          22       0.16      0.36      0.22        28\n",
      "          23       0.21      0.23      0.22        31\n",
      "          24       0.50      0.36      0.42        11\n",
      "          25       0.51      0.34      0.41       123\n",
      "          26       0.57      0.53      0.55        38\n",
      "          27       0.50      0.15      0.23        27\n",
      "          28       0.89      0.19      0.31        42\n",
      "          29       0.78      0.23      0.36        30\n",
      "          30       0.75      0.15      0.26        39\n",
      "          31       0.85      0.16      0.27        70\n",
      "          32       0.92      0.61      0.73        18\n",
      "          33       0.73      0.28      0.41        57\n",
      "          34       0.50      0.09      0.15        34\n",
      "          35       0.07      0.96      0.13        82\n",
      "          36       0.64      0.27      0.38        33\n",
      "          37       0.50      0.47      0.49        19\n",
      "          38       0.79      0.39      0.52       168\n",
      "          39       0.80      0.30      0.43        27\n",
      "          40       0.89      0.32      0.47        25\n",
      "          41       0.32      0.33      0.32        18\n",
      "          42       1.00      0.29      0.45        41\n",
      "\n",
      "    accuracy                           0.40      3072\n",
      "   macro avg       0.61      0.38      0.43      3072\n",
      "weighted avg       0.64      0.40      0.45      3072\n",
      "\n"
     ]
    }
   ],
   "source": [
    "print(report)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "precision_new = []\n",
    "recall_new = []\n",
    "f1_new = []"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [],
   "source": [
    "for i in np.arange(len(report_dict)-3):\n",
    "#     print(i)\n",
    "    precision_new.append(report_dict[str(i)]['precision'])\n",
    "    recall_new.append(report_dict[str(i)]['recall'])\n",
    "    f1_new.append(report_dict[str(i)]['f1-score'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[0.0, 0.6714285714285714, 0.36666666666666664, 0.7272727272727273, 0.4846153846153846, 0.6666666666666666, 0.7272727272727273, 0.639344262295082, 0.45569620253164556, 0.52, 0.8481012658227848, 0.6296296296296297, 0.8349514563106796, 0.6716417910447762, 0.9523809523809523, 0.3533834586466165, 0.8823529411764706, 0.9818181818181818, 0.7215189873417721, 0.45714285714285713, 0.5833333333333334, 0.16666666666666666, 0.15625, 0.21212121212121213, 0.5, 0.5060240963855421, 0.5714285714285714, 0.5, 0.8888888888888888, 0.7777777777777778, 0.75, 0.8461538461538461, 0.9166666666666666, 0.7272727272727273, 0.5, 0.06887532693984307, 0.6428571428571429, 0.5, 0.7857142857142857, 0.8, 0.8888888888888888, 0.3157894736842105, 1.0] [0.0, 0.23857868020304568, 0.24581005586592178, 0.3053435114503817, 0.4144736842105263, 0.23129251700680273, 0.7272727272727273, 0.38613861386138615, 0.3564356435643564, 0.5098039215686274, 0.49264705882352944, 0.40476190476190477, 0.5276073619631901, 0.5921052631578947, 0.6779661016949152, 0.734375, 0.4166666666666667, 0.5806451612903226, 0.5277777777777778, 0.6153846153846154, 0.25925925925925924, 0.2, 0.35714285714285715, 0.22580645161290322, 0.36363636363636365, 0.34146341463414637, 0.5263157894736842, 0.14814814814814814, 0.19047619047619047, 0.23333333333333334, 0.15384615384615385, 0.15714285714285714, 0.6111111111111112, 0.2807017543859649, 0.08823529411764706, 0.9634146341463414, 0.2727272727272727, 0.47368421052631576, 0.39285714285714285, 0.2962962962962963, 0.32, 0.3333333333333333, 0.2926829268292683] [0.0, 0.35205992509363293, 0.294314381270903, 0.43010752688172044, 0.44680851063829785, 0.3434343434343434, 0.7272727272727273, 0.48148148148148157, 0.4, 0.5148514851485149, 0.6232558139534883, 0.4927536231884058, 0.6466165413533834, 0.6293706293706294, 0.7920792079207921, 0.47715736040609136, 0.5660377358490566, 0.7297297297297297, 0.6096256684491979, 0.5245901639344263, 0.358974358974359, 0.1818181818181818, 0.21739130434782608, 0.21875, 0.4210526315789474, 0.4077669902912622, 0.547945205479452, 0.22857142857142856, 0.3137254901960784, 0.35897435897435903, 0.25531914893617025, 0.26506024096385544, 0.7333333333333334, 0.4050632911392405, 0.15, 0.12855980471928397, 0.3829787234042553, 0.4864864864864865, 0.5238095238095237, 0.43243243243243246, 0.47058823529411764, 0.3243243243243243, 0.45283018867924524]\n"
     ]
    }
   ],
   "source": [
    "print(precision_new,recall_new,f1_new)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [],
   "source": [
    "f1_rate = []"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "ename": "NameError",
     "evalue": "name 'f1_old' is not defined",
     "output_type": "error",
     "traceback": [
      "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[1;31mNameError\u001b[0m                                 Traceback (most recent call last)",
      "\u001b[1;32m<ipython-input-13-f6f23f20a8ba>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[1;32mfor\u001b[0m \u001b[0mold\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mnew\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mzip\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mf1_old\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mf1_new\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m      2\u001b[0m     \u001b[0mf1_rate\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mappend\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mold\u001b[0m \u001b[1;33m-\u001b[0m \u001b[0mnew\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;31mNameError\u001b[0m: name 'f1_old' is not defined"
     ]
    }
   ],
   "source": [
    "for old,new in zip(f1_old, f1_new):\n",
    "    f1_rate.append(old - new)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "print(f1_rate)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "precision_rate = []"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "for old,new in zip(precision_old, precision_new):\n",
    "    precision_rate.append(old - new)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "print(precision_rate)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "recall_rate = []"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "for old,new in zip(recall_old, recall_new):\n",
    "    recall_rate.append(old - new)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "print(recall_rate)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "np.array(f1_rate).min()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "np.array(precision_rate).min()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "np.array(recall_rate).min()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "ename": "NameError",
     "evalue": "name 'precision_rate' is not defined",
     "output_type": "error",
     "traceback": [
      "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[1;31mNameError\u001b[0m                                 Traceback (most recent call last)",
      "\u001b[1;32m<ipython-input-14-4b39387efa40>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mprecision_rate\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m",
      "\u001b[1;31mNameError\u001b[0m: name 'precision_rate' is not defined"
     ]
    }
   ],
   "source": [
    "precision_rate"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [],
   "source": [
    "f1_old = [0.9655172413793104, 0.8941176470588236, 0.7272727272727272, 0.854054054054054, 0.9565217391304347, 0.7956989247311829, 0.9500000000000001, 0.7857142857142858, 0.9146341463414636, 0.9186046511627908, 0.9815950920245399, 0.7403846153846154, 0.9775280898876404, 0.9685534591194969, 0.988095238095238, 0.9166666666666666, 0.888888888888889, 0.9878048780487805, 0.6611570247933884, 0.8633879781420766, 0.8690476190476191, 0.8789808917197451, 0.9936305732484078, 0.5555555555555555, 0.688, 0.84375, 0.7872340425531915, 0.6666666666666666, 0.9119170984455958, 0.8202247191011237, 0.7172413793103449, 0.8993288590604027, 0.8092485549132947, 0.8571428571428571, 0.8662420382165605, 1.0, 0.8201438848920863, 0.9803921568627451, 0.7476635514018691, 0.8, 0.8428571428571427, 0.8, 0.9268292682926829]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "画杀死率图"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [],
   "source": [
    "kill_per_class =   [10,10,10,10,10,10,9,10,10,10,10,9,10,10,10,10,10,10,10,10,10,10,9,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10]\n",
    "kill_per_class_2 = [8,5,5,6,3,5,9,9,6,2,4,2,7,1,9,6,5,3,6,6,6,9,6,6,8,7,6,5,7,7,3,3,1,6,2,4,3,8,7,6,6,9,4]\n",
    "kill_origin = [8,8,6,6,8,8,8,6,6,8,9,5,8,8,7,6,8,8,8,6,8,6,5,6,6,6,8,5,5,8,7,8,6,10,5,7,6,8,6,7,5,6,8]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "len(f1_old)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(0.36218065402137306, 0.017002671518756184)"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "correlation, p = scipy.stats.spearmanr(f1_old, kill_origin)\n",
    "correlation, p"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(0.24613390389309167, 0.11160198950326318)"
      ]
     },
     "execution_count": 48,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "correlation, p = scipy.stats.spearmanr(f1_old, kill_origin)\n",
    "correlation, p"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "kill_rate = []"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[2,\n",
       " 2,\n",
       " 4,\n",
       " 4,\n",
       " 2,\n",
       " 2,\n",
       " 1,\n",
       " 4,\n",
       " 4,\n",
       " 2,\n",
       " 1,\n",
       " 4,\n",
       " 2,\n",
       " 2,\n",
       " 3,\n",
       " 4,\n",
       " 2,\n",
       " 2,\n",
       " 2,\n",
       " 4,\n",
       " 2,\n",
       " 4,\n",
       " 4,\n",
       " 4,\n",
       " 4,\n",
       " 4,\n",
       " 2,\n",
       " 5,\n",
       " 5,\n",
       " 2,\n",
       " 3,\n",
       " 2,\n",
       " 4,\n",
       " 0,\n",
       " 5,\n",
       " 3,\n",
       " 4,\n",
       " 2,\n",
       " 4,\n",
       " 3,\n",
       " 5,\n",
       " 4,\n",
       " 2]"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "for old,new in zip(kill_per_class, kill_origin):\n",
    "    kill_rate.append(old - new)\n",
    "kill_rate"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [],
   "source": [
    "kill_per_class = np.array(kill_per_class)\n",
    "f1_rate = np.array(f1_rate)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(0.1272022518427709, 0.4163031926944768)"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "correlation, p = scipy.stats.spearmanr(f1_rate,kill_per_class/10)\n",
    "correlation, p"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [],
   "source": [
    "kill_per_class = np.array(kill_per_class)\n",
    "kill_per_class_2 = np.array(kill_per_class_2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([ 1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16, 17,\n",
       "       18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,\n",
       "       35, 36, 37, 38, 39, 40, 41, 42, 43])"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "kill_per_index = np.arange(1, 44)\n",
    "kill_per_index"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['SUV', '轿车', '微型客车', '小型货车', '公共汽车', '卡车']"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 公共汽车、微型客车、小型货车、轿车、SUV和卡车。每种车型的车辆数量分别为558辆、883辆、476辆、5922辆、1392辆和822辆。\n",
    "class_name = ['SUV', 'Sedan', 'Microbus', 'Minivan', 'Bus', 'Truck']\n",
    "[1392, 5922, 883, 476, 558, 822]\n",
    "['SUV','轿车','微型客车','小型货车','公共汽车','卡车']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "No handles with labels found to put in legend.\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(kill_per_index, kill_per_class)\n",
    "plt.legend()\n",
    "# plt.xticks(kill_per_index,kill_per_index)\n",
    "plt.xlim(1, 44) # x轴范围\n",
    "plt.ylim(0, 10) # y轴范围\n",
    "# plt.title('simple-0.47')\n",
    "plt.xlabel('kill_per_index')\n",
    "plt.ylabel('kill_per_class')\n",
    "# plt.xticks(range(1,7,1), class_name)\n",
    "plt.grid(linestyle='--') # figure中的网格线\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "No handles with labels found to put in legend.\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(kill_per_index, kill_per_class_2)\n",
    "plt.legend()\n",
    "# plt.xticks(kill_per_index,kill_per_index)\n",
    "plt.xlim(1, 44) # x轴范围\n",
    "plt.ylim(0, 10) # y轴范围\n",
    "# plt.title('simple-0.92')\n",
    "plt.xlabel('kill_per_index')\n",
    "plt.ylabel('kill_per_class_2')\n",
    "# plt.xticks(range(1,7,1), class_name)\n",
    "plt.grid(linestyle='--') # figure中的网格线\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 63,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[0.6986425339366515,\n",
       " 0.6975437679644629,\n",
       " 0.6234567901234568,\n",
       " 0.7466535433070866,\n",
       " 0.839304870199528,\n",
       " 0.8328370554177006,\n",
       " 0.90625,\n",
       " 0.5884811046511628,\n",
       " 0.8282051282051283,\n",
       " 0.6293157564344005,\n",
       " 0.7687074829931972,\n",
       " 0.7210379981464319,\n",
       " 0.42405816259087903,\n",
       " 0.5740740740740741,\n",
       " 0.7659574468085106,\n",
       " 0.6377331420373027,\n",
       " 0.6531001589825118,\n",
       " 0.7518840579710145,\n",
       " 0.39171319424037615,\n",
       " 0.9134199134199135,\n",
       " 0.7965517241379311,\n",
       " 0.6516804888694894,\n",
       " 0.8064516129032258,\n",
       " 0.4861111111111111,\n",
       " 0.37080103359173133,\n",
       " 0.6384976525821597,\n",
       " 0.6358680057388808,\n",
       " 0.4165834165834166,\n",
       " 0.9505494505494505,\n",
       " 0.7453488372093023,\n",
       " 0.42840283241542093,\n",
       " 0.7150925024342747,\n",
       " 0.41952983725135623,\n",
       " 0.7468944099378882,\n",
       " 0.6875,\n",
       " 0.7474747474747474,\n",
       " 0.5148874364560638,\n",
       " 0.6666666666666667,\n",
       " 0.6373056994818653,\n",
       " 0.6924603174603174,\n",
       " 0.7237521514629949,\n",
       " 0.6461538461538462,\n",
       " 0.7402597402597402]"
      ]
     },
     "execution_count": 63,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "recall_rate"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [],
   "source": [
    "recall_total = 0"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {},
   "outputs": [],
   "source": [
    "for f1 in recall_rate:\n",
    "    recall_total = recall_total + math.pow((f1 - np.array(recall_rate).mean()), 2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.8298920863992457"
      ]
     },
     "execution_count": 39,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "recall_total"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {},
   "outputs": [],
   "source": [
    "f1_total = 0"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {},
   "outputs": [],
   "source": [
    "for f1 in f1_rate:\n",
    "    f1_total = f1_total + math.pow((f1 - np.array(f1_rate).mean()), 2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.7770257600100345"
      ]
     },
     "execution_count": 42,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "f1_total"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "grad",
   "language": "python",
   "name": "grad"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.15"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
